/**
 * @param {number} n
 * @return {number}
 * 解题思路: 1  2  3  5  8  13  21 .....  其实就是 第n楼 结果是 n-1 + n-2 之和(n>2)
 * 傅里叶函数
 */
var climbStairs = function (n) {
  if (n == 1) return 1;
  let arr = [1, 2];
  for (let i = 2; i < n; i++) {
    arr[i] = arr[i - 1] + arr[i - 2];
  }
  return arr[n - 1];
};

/**
 * 这种递归调用方法 代码虽然简单。但是效率极低，大量的重复计算  不推荐
 * @param {number} n
 * @returns
 */
var climbStairs_recursion = function (n) {
  if (n == 1) return 1;
  if (n == 2) return 2;

  return climbStairs_recursion(n - 1) + climbStairs_recursion(n - 2);
};
var num = 50;
var start = new Date().getTime();

// console.log(climbStairs_recursion(num), "递归");
console.log(climbStairs(num));
console.log("用时间====", new Date().getTime() - start);
